package violencerecursion;

/**
 * @author tongchen
 * @create 2023-03-15 23:40
 */
public class NumConvert {
    public static void main(String[] args) {
        String s="12345";
        System.out.println(convert(s));

    }
    //创建转化函数
    public static int convert(String s){
        //将字符串转化为字符数组
        char[] chars = s.toCharArray();
        //进行递归
      return  process(chars,0);
    }

    private static int process(char[] chars, int i) {
        //检查递归的出口
        if(i== chars.length){
            return 1;
        }
        //如果是0的情况下，只能和前面的数字合体，如果单独遍历到0，直接返回0
        if(chars[i]=='0'){
            return 0;
        }
        //如果是1和2，可能存在两种情况
        if(chars[i]=='1'){
            int res=process(chars, i+1);
            //判断第二种情况，结果直接在1的基础上进行相加即可
            if((i+1)< chars.length){
                res+=process(chars, i+2);
            }
            return res;
        }
        //如果是2，也要进行分类讨论
       else if(chars[i]=='2'){
            int res=process(chars, i+1);
            if((i+1)< chars.length&&chars[i+1]<='5'){
                res+=process(chars, i+2);
            }
            //注意要将结果直接返回，不继续向下遍历了
            return res;
        }
        //如果是3-9，就只有一种情况了
        else{
            return process(chars, i+1);
        }
    }
}
